Enterprise database systems store data related to many aspects of a business enterprise. Every transaction (where “transaction” refers to a set of operations) against the data stored in database causes a log record to be written into a transaction log. The log record typically describes the transaction and its effect on the data. The log records of the transaction log may therefore be used to recover from errors or to restore the database to a prior state.
It is desirable to design a durable log data storage system that supports low-latency writes and high throughput reads, or scans. Such a storage system may prevent data from being written to a particular memory index, or key, more than once, and guarantee that a value for a key is durable once acknowledged as written (e.g., even in the event of failures such as power loss). A value for a key may include multiple payloads, where each payload is associated with a “stream” identifier. In such a case, scanning for the key and specifying a stream identifier causes the storage system to return an individual payload of a value which is associated with the stream identifier.